home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 1 of 2).iso / utilities / u286.dms / in.adf / Misc / DME / doc / DME.doc < prev    next >
Encoding:
Text File  |  1991-08-01  |  45.6 KB  |  1,205 lines

  1.  
  2. dme/dme                             dme/dme
  3.  
  4. DME.DOC                 DME version 1.42                 Matthew Dillon
  5.                          22 August 1990
  6.  
  7. DME, (C)Copyright 1987-90, Matthew Dillon.  All Rights Reserved.
  8. This software may be distributed for non-profit only.  This software is
  9. FREEWARE, not shareware.
  10.  
  11.     Matthew Dillon
  12.     891 Regal Rd
  13.     Berkeley, Ca. 94708
  14.     USA
  15.  
  16.  
  17.     Source is avalable:
  18.  
  19.     (1) By regular mail (send a disk)
  20.     (2) By Electronic mail:
  21.         INTERNET:    uunet.uu.net!overload!dillon        OR
  22.             dillon@overload.Berkeley.CA.US
  23.  
  24.     Donations welcome but not solicited (I ain't a starving artist).
  25.  
  26.     icon by Bryce Nesbitt
  27.  
  28.     text markers and the text-block stack by Kevin Seghetti (some of the new
  29.     commands for 1.30).
  30.  
  31.     AREXX interface (Bill Hawes' ARexx REXX language interpreter) ported
  32.     by Kim DeVaughn
  33.  
  34.     1.42 additions by Markys Wenzel
  35.  
  36. ---------------------------------------------------------------------------
  37.  
  38. 0   Installation
  39. I   Overview
  40. II  Keymapping        key and mouse mapping
  41. III Command Sequences    DME commands
  42. IV  File Particulars    notes on loading and saving files,
  43. V   Workbench Support
  44. VI  Revision Summary    revision numbering, changes made, etc...
  45. VII Compiling        compiling instructions
  46.  
  47.                     0
  48.                    INSTALLATION
  49.  
  50. The NULL: device must be  mounted  to  be  able  to  use  the  EXECUTE
  51. command. This is so EXECUTE works even    if  the  console  window  goes
  52. away.  Otherwise, simply put DME in an    accessable  location  (usually
  53. C:).  Put the dme.icon file in the same directory as DME if  you  want
  54. to access the application from the workbench (dme.icon is  not  needed
  55. if accessed from a CLI or shell).
  56.  
  57. People appear to have problems using the EXECUTE command when  DME  is
  58. run from the workbench.  I have no solution yet.
  59.  
  60. CONFIGURATION of default window placement,  pen  selection,  and  most
  61. editor modes (insert/overwrite, margin,  etc...)  is  accomplished  by
  62. bringing up DME, setting it  up  how  you  like,  then    selecting  the
  63. SAVECONFIG menu option (saves to s:dme.config).
  64.  
  65.  
  66.                     I
  67.                  OVERVIEW
  68.  
  69. See REVISIONS section for revisions.  DME is an editor designed mainly
  70. for programmers.  Although it is not a word processor, it does include
  71. many  word  processing    features  such    as  Word-Wrap  and   automatic
  72. paragraph formatting.  Here is a quick 'features' list:
  73.  
  74.     -control  language  based  on  a  rich    command  set  accessed
  75.     manually or via arbitrary mapping of keys. (Every key  may  be
  76.     mapped to 128 different things via qualifier and mouse keys)
  77.  
  78.     -General variables, reference macros as variables, ENV: enviroment
  79.      variables (1.30C and beyond).
  80.  
  81.     -fast visual response (it scrolls quickly)... even faster when
  82.      BlitzFonts or similar text speedup utilities are installed.
  83.  
  84.     -title-line statistics showing your current position in the file,
  85.      file name, whether the file has been modified or not, etc...
  86.  
  87.     -Multiple Windows, ability to iconify windows
  88.  
  89.     -Word Wrap and automatic paragraph formatting.
  90.  
  91.     -ability to map any KEY or MOUSE BUTTON combination.
  92.  
  93. DME has been designed to allow easy expansion, and I  intend  to  make
  94. many  future  improvments.   It  has  not  been  designed   for   user
  95. friendliness, but is  straight    forward  if  you  read    this  document
  96. [care]fully.
  97.  
  98. AS OF 1.40 and until further notice DME no longer takes  command  line
  99. arguments  other  than    file  arguments,  or  workbench  based    window
  100. arguments. DME used to take arguments to  specify  window  dimensions.
  101. Use the saveconfig command to setup default window parameters.
  102.  
  103. The  1.40-41  Version  is  an    experimental   intermediate   version,
  104. documentation may not be up to date.
  105.  
  106. Normally, DME will automatically SOURCE two script files, S:.EDRC, and
  107. the .EDRC in your current directory. These files do not have to exist.
  108. These script  files  usually  contain  mappings  and  do  things  (for
  109. example, turn on savetabs).
  110.  
  111.  
  112.                     II
  113.                  KEYMAPPING
  114.  
  115. MOUSE BUTTONS:
  116.  
  117.     The mouse buttons and combinations thereof may now be mapped.  The
  118.     default mappings for the mouse buttons are as follows:
  119.  
  120.     Left-button:    Move cursor to current mouse position
  121.     Right-button:   Iconify window
  122.     Left-button held down while moving mouse tracks the cursor
  123.  
  124.     The iconification features:
  125.     -Remembers original window size and placement
  126.     -Remembers placement of iconified window when you re-iconify later.
  127.  
  128.     Currently, you will crash the machine if you run out of memory and
  129.     DME is unable to open the icon window or original  window,    so  be
  130.     careful.
  131.  
  132.     see below for mapping the mouse buttons and mouse movement.
  133.  
  134.  
  135. KEYBOARD:
  136.  
  137. The  rest  of  the  Functional    interface  for     DME   is   based   on
  138. key/mouse/menu mappings and a rich command  set.   Unlike  other  text
  139. editors, any non-qualifier key in DME  may  be    defined  to  have  any
  140. meaning whatsoever.  It just so happens that the  default  keymappings
  141. assign such things as the (return) key to  the  RETURN  function,  the
  142. (up) key to the UP function, etc...  Keys are named  by  their  keycap
  143. labels with the following exceptions:
  144.  
  145.     the name for Back-Space is    BS
  146.     the name for numeric keypad keys are prepended with an NK, except for
  147.     the Enter key which is named 'ENTER'.
  148.     The four cursor control keys are labeled UP, DOWN, LEFT, and RIGHT
  149.     The three mouse buttons are labeled RMB, MMB, and LMB.
  150.  
  151. NOTES:
  152.        You must type commands in lower-case, except for text, which can be
  153.        either lower or upper case, and for upper-case alpha keys when
  154.        specifying keymaps (i.e.  A and s-a are the same key).  The
  155.        exception is the AMIGA qualifier key, which uses 'A' instead of
  156.        'a'(Alt).
  157.  
  158.        Each key may be qualified with any combination of CTRL, ALT, SHIFT,
  159.        AMIGA, or any of the MOUSE buttons.  With 6 qualifiers (7 if your
  160.        mouse has a middle button), you can assign up to 64 (128) different
  161.        maps to each physical key on the keyboard.
  162.  
  163.        The CAPS-LOCK, when lit, is equivalent to SHIFT only for Alpha keys.
  164.  
  165.        The AMIGA-ALT (aA) combination isn't very usable since Intuition
  166.        uses the sequence to duplicate a Mouse SELECT.  Other AMIGA
  167.        sequences are used by intuition for mouse movement and other things.
  168.        Some other qualifier combinations may not be usable due to other
  169.        special sequences.
  170.  
  171.        Some keys must be mapped by their lower-case keycap.  That is, to
  172.        map the '>' key (USA keyboard), you specify shift dot (s-.)
  173.  
  174.  
  175.     ***EXAMPLES:***
  176.  
  177.     tab tab
  178.     a-a ALT a
  179.     A-a AMIGA a
  180.     sA-a    SHIFT AMIGA a
  181.     s-tab    SHIFT tab
  182.     c-tab    CTRL tab
  183.     ac-?    ALT-CTRL ?
  184.     s-f5    SHIFT F5
  185.     nk0 Numeric Keypad 0
  186.     cs-nk0    CTRL SHIFT Numeric Keypad 0
  187.     L-lmb    Left Mouse button pressed
  188.     L-mmove    Mouse moved while left mouse button held down
  189.     LR-lmb    left mouse button hit while right mouse button held down
  190.     s-.     shift . ('>' for USA keyboards)
  191.  
  192.     ***************
  193.  
  194. MAPPING MOUSE BUTTONS
  195.  
  196.     Mouse buttons serve both as QUALIFIERS and as KEYS.  Thus, you can map
  197.     both normal keystrokes which require a mouse button to be held down:
  198.  
  199.     map L-a ((left button and an a))
  200.  
  201.     as well as the mouse keys themselves:
  202.  
  203.     map L-lmb   ((left mouse key))
  204.  
  205.     note that you had to specify the left mouse button down qualifier L as
  206.     well as the left mouse button LMB.
  207.  
  208.     If you map the left mouse button, and also map a sequence such as left
  209.     mouse button + a:
  210.  
  211.     map L-lmb   tomouse
  212.     map L-a     ((hello))
  213.  
  214.     Note that the first mapping will always get executed even if you
  215.     intended L-a (that is, BOTH mappings would get executed).  In order
  216.     to avoid confusion you might want to UNMAP the system default mapping
  217.     for the right mouse button (mapped to ICONIFY) if you wish to apply
  218.     combinations to the right mouse button.
  219.  
  220.     MOUSE MOVEMENT is mapped with one or more mouse qualifiers (L, R, M),
  221.     plus 'MMOVE' for the key.  That is:
  222.  
  223.     map LR-mmove ((moving the mouse with both buttons held down))
  224.  
  225.     Or how bout capping the characters under the mouse while moving the
  226.     mouse?
  227.  
  228.     map LR-mmove (tomouse if cl (tlate -32))
  229.  
  230.  
  231.  
  232. DEFAULT KEYMAPPINGS:
  233.  
  234.     All Printable Ascii keys mapped to their ascii equivalent. BS, DEL, UP,
  235.     DOWN, LEFT, RIGHT, TAB, S-TAB, and ENTER are mapped properly.  These are
  236.     the default system keymappings.
  237.  
  238.  
  239.     map (a-c)       (bcopy)
  240.     map (a-d)       (bdelete)
  241.     map (a-down)    (scrolldown)
  242.     map (a-l)       (while cu (tlate +32 right))
  243.     map (a-m)       (bmove)
  244.     map (a-r)       (nextr)
  245.     map (a-s)       (bsource)
  246.     map (a-u)       (while cl (tlate -32 right))
  247.     map (a-up)      (scrollup)
  248.     map (bs)        (bs)
  249.     map (c-/)       (escimm (find ))
  250.     map (c-])       (ref)
  251.     map (c-[)       (ctags)
  252.     map (c-1)       (goto block)
  253.     map (c-b)       (block)
  254.     map (c-c)       ()
  255.     map (c-del)     (remeol)
  256.     map (c-down)    (pagedown)
  257.     map (c-esc)     (recall)
  258.     map (c-f)       (reformat)
  259.     map (c-g)       (escimm (goto ))
  260.     map (c-i)       (insertmode on)
  261.     map (c-j)       (join)
  262.     map (c-l)       (wleft)
  263.     map (c-n)       (next)
  264.     map (c-o)       (insertmode off)
  265.     map (c-p)       (prev)
  266.     map (c-q)       (quit)
  267.     map (c-r)       (wright)
  268.     map (c-s)       (split first down)
  269.     map (c-u)       (unblock)
  270.     map (c-up)      (pageup)
  271.     map (c-w)       (wordwrap toggle)
  272.     map (del)       (del)
  273.     map (down)      (down)
  274.     map (enter)     (return)
  275.     map (esc)       (esc)
  276.     map (f1)        (escimm (insfile ))
  277.     map (f10)       (saveold quit)
  278.     map (f2)        (escimm (newfile ))
  279.     map (f3)        (escimm (newwindow newfile ))
  280.     map (f6)        (saveold iconify)
  281.     map (f7)        (escimm (bsave ))
  282.     map (f8)        (saveold escimm (newfile ))
  283.     map (f9)        (saveold)
  284.     map (L-lmb)     (tomouse)
  285.     map (L-mmo)     (tomouse)
  286.     map (left)      (left)
  287.     map (R-rmb)     (iconify)
  288.     map (return)    (return insline up firstnb down)
  289.     map (right)     (right)
  290.     map (s- )       (( ))
  291.     map (s-del)     (deline)
  292.     map (s-down)    (bottom)
  293.     map (s-left)    (first)
  294.     map (s-right)   (last)
  295.     map (s-tab)     (backtab)
  296.     map (s-up)      (top)
  297.     map (sa-s)      (unblock block block bsource)
  298.     map (tab)       (tab)
  299.     map (up)        (up)
  300.  
  301.  
  302.  
  303.                     III
  304.                  COMMAND SEQUENCES
  305.  
  306. DME has a rich command set which allows you to embed  commands    within
  307. commands, or specify multiple commands in a row.  A  command  consists
  308. of a KEYWORD followed by a FIXED number of  arguments  (0,  1,  2...).
  309. The argument delimeter in DME is a SPACE.  Therefore, to embed strings
  310. containing spaces as a single argument, you must surround  the    string
  311. with  (string)  (backsinglequote-string-singlequote).   TEXT   to   be
  312. written  as  if  typed     is   also   specified     via   a   string   in
  313. backquote-quotes.  For example:
  314.  
  315.     right right (hello) right right (hello) enter down
  316.     map f4 (right right) map f5 (left left)
  317.     map f4 ((hello))
  318.  
  319. Reiterating (because this is important!)... If a command  expects  ONE
  320. argument, then it really  does    expect    a  single  argument,  and  any
  321. remaining arguments are thought to be the next command... so:
  322.  
  323.     map f4 right
  324.                     -right is only one word, so no need
  325.                      for ().
  326.     map f4 (right right)
  327.                     -we want to map f4 to two rights... we
  328.                      need the () or the second right will
  329.                      not be part of the map.
  330.  
  331.     map c-del (repeat cright del)
  332.                     -this is already implimented as REMEOL,
  333.                      but shown here for clarity.
  334.  
  335. Some arguments will eventually be fed through the command  interpreter
  336. more than once.  The MAP command is a good example.  When you  execute
  337. a MAP command, the first run through the command interpreter  installs
  338. the map string minus a set of quotes.  So,  if    you  want  to  specify
  339. text, you must enclose the text in two sets of    ((text))  because  the
  340. map string gets passed through the command interpreter again when  you
  341. hit the mapped key.  Here are some more complex examples:
  342.  
  343.     map f4 (right right (hello) left left)      *RIGHT*
  344.     map f4 right right hello left left        *WRONG*
  345.  
  346.     map f4 (map f4 ((hello)))
  347.                     -the first time you hit F4, it's command
  348.                      is to re-map itself to the TEXT (hello).
  349.                      (gads!).
  350.  
  351.     map c-i (repeat tr (( )))
  352.                     -example of how to embed a space in a
  353.                      map and repeat (goes through command
  354.                      interpreter three times!).
  355.  
  356.  
  357. An easy way to fool around executing commands or making maps is either
  358. to use the ESC key (which enters command mode), or  a-S (alt-shift-s),
  359. which EXECUTES the current DME line that the cursor is on....  so  you
  360. can use DME to edit and test your new keymappings.
  361.  
  362.  
  363.                 STRING VARIABLES
  364.  
  365.     String variables are replaced with their contents.    Three specification
  366.     forms are allowed:
  367.  
  368.     $varname        - varname can only consist of a-z,A-Z,0-9,-,_
  369.     $(varname)      - anything not containing a '(' or ')'
  370.     $`varname'      - anything not containing a '`' or '''
  371.  
  372.     Two special variables exist:
  373.  
  374.     filename    - the current filename
  375.     scanf        - the current scanf'd string (see SCANF below)
  376.     lineno        - the current cursor line number (1 .. N)
  377.     colno        - the current cursor column number (1 .. N)
  378.  
  379.     Other variables cause a search of three variable domains to find the
  380.     contents.  For example, if you give  $DMEFONT:
  381.  
  382.     (1) An Internal variable named DMEFONT is searched for.  Internal
  383.         variables are case sensitive.  (see SET, UNSET)
  384.  
  385.     (2) An Enviroment variable name DMEFONT is searched for.  Enviroment
  386.         variables are NOT case sensitive.  (see SETENV, UNSETENV).  The
  387.         1.3 ENV: is used.
  388.  
  389.     (3) A DME keymap or menu definition named DMEFONT is searched for.
  390.         This allows you to say something like $sa-tab to insert the
  391.         contents of the shift-alt-tab keymap.   (see MAP, UNMAP, and
  392.         MENU oriented commands).
  393.  
  394.     The reason for the other two forms of variable specifiction is to allow
  395.     one to access strangely named variables (with puncuation and other crap).
  396.  
  397.     SPECIAL NOTE:  What is wrong with this command?
  398.  
  399.     repeat 100 (first ($myvar))
  400.  
  401.     What is wrong is that $myvar is evaluated BEFORE the repeat is
  402.     executed.  myvar might contain characters that would confuse the
  403.     command specification when.  That is, if myvar contained a '(' you
  404.     could get something like:    repeat 100 (fist ((())  which is obviously
  405.     incorrect.    By using \ you can cause $myvar to be evaluated at
  406.     loop-execution time rather than before:
  407.  
  408.     repeat 100 (first (\$myvar))
  409.  
  410.     These kinds of problems can also occur when you do keymaps... you
  411.     probably do not want to evaluate the variable at keymap-entry time,
  412.     but rather would want the variable evaluated at keymap-execution time.
  413.  
  414.     On the otherhand, this is perfectly allowable:
  415.  
  416.     set x (tlate +1)
  417.     repeat 100 ($x)
  418.  
  419.     Which executes the command (tlate +1) 100 times... By NOT surrounding
  420.     the variable with parens (depends on the situation), the variable is
  421.     executed rather than inserted as text.
  422.  
  423.  
  424.                SPECIAL CHARACTERS
  425.  
  426.     ^ is used to introduce a control character.  For example, ^c would
  427.     embed a control-c.    You cannot embed c-@ (ascii code 0).
  428.  
  429.     backslash \ is used to override special meanings.  The next character
  430.     is overriden.
  431.  
  432.     map c-a ((^l))      -map control a to produce a control l
  433.     map c-a ((\\\^l))   -map control a to produce a "^l".  The first
  434.              \ overides the second, and the third overides
  435.              the ^.
  436.  
  437. COMMAND LIST:
  438.  
  439.     (text)          -enter text as if typed.
  440.     key         -execute a keymap as a macro (example:  c-a)
  441.     header-item     -execute a menu item as a macro (example: Project-Save)
  442.              (case independant)
  443.     ADDPATH path    -Add the specified symbolic directory to DME's special
  444.              search path (see REF and CTAGS).
  445.     ARPINSFILE        -INSFILE filerequestor, only if ARP.LIBRARY installed
  446.     ARPLOAD        -NEWFILE filerequestor, only if ARP.LIBRARY installed
  447.     ARPSAVE        -SAVEAS  filerequestor, only if ARP.LIBRARY installed
  448.     BACK        -same as BS
  449.     BACKTAB        -backward tab
  450.     BCOPY        -copy block before cursor line
  451.     BDELETE        -delete the block
  452.     BGPEN pen        -set background pen
  453.     BLOCK        -Set start or end of block
  454.     BMOVE        -move block before cursor line
  455.     BOTTOM        -Move to Bottom of File
  456.     BS            -backspace, (delete char to left of cursor)
  457.     BSAVE file        -save the block to a file
  458.     BSOURCE        -source current text block as if it were a script file
  459.     CHFILENAME name -change the name of the working file
  460.     CTAGS        -search for the tag under the cursor (see below)
  461.     DEL         -delete, (deletes char under cursor)
  462.     DELINE        -delete line
  463.     DOWN        -cursor down
  464.     DOWNADD        -cursor down.  If at bottom of text, add a line.
  465.     ESC         -toggle manual command entry mode
  466.     ESCIMM arg        -go into command entry mode prompting with a
  467.              predefined string.
  468.     EXECUTE comm    -Execute a CLI command
  469.     FGPEN pen        -Set foreground pen
  470.     FIND string     -SET the search pattern and do a NEXT
  471.     FINDR s1 s2     -Set find and replace patterns and do one find/rep.
  472.     FINDSTR string  -SET the search string pattern
  473.     FIRST        -move to column 1
  474.     FIRSTNB        -Move to first non-blank in line.
  475.     GOTO BLOCK        -Goto the beginning of the marked block.
  476.     GOTO START        -same as GOTO BLOCK.  undefined if no block
  477.     GOTO END        -goes to the END of the marked block.  undef. if no blk.
  478.     GOTO [+/-]N     -Goto an absolute or relative line number
  479.     HEIGHT N        -set height in PIXELS for any new windows
  480.     HGPEN pen        -set highlight pen
  481.     ICONIFY        -iconify the window
  482.     IF cnd act        -IF/WHILE/IFELSE.. SEE BELOW
  483.     IFELSE cnd ifact elseact
  484.     IGNORECASE what -set case ignore for seaches.  what = on, off, or toggle
  485.     INSERTMODE what -set INSERTMODE.  what = on, off, or toggle
  486.     INSFILE name    -insert a file into the current text.
  487.     INSLINE        -insert line
  488.     JOIN        -join next line to line at cursor
  489.     JUSTIFY how     -simple text justification.  Currently only 'full'
  490.              justification supported (justify full).
  491.     LAST        -move one beyond the last non-space in a line.
  492.     LEFT        -cursor left
  493.     LEFTEDGE N        -set leftedge on the screen in PIXELS for any new window
  494.     MAP key map     -map a key to a keymap
  495.     MARGIN N        -set WordWrap and paragraph formatting margin
  496.              (related to WORDWRAP and REFORMAT)
  497.     MENUADD hdr item cmd    -add menu item
  498.     MENUDEL hdr item        -delete menu item
  499.     MENUDELHDR hdr        -delete menu header
  500.     MENUCLEAR            -delete entire menu
  501.     MENUON            -enable menus  (multiple calls are stacked)
  502.     MENUOFF            -disable menus (multiple calls are stacked)
  503.     MODIFIED on/off/toggle
  504.             -set modified flag manually
  505.  
  506.     NEWFILE name    -replace current text with new file
  507.     NEWWINDOW        -open new window using default window parameters
  508.     NEXT        -find next occurance of search pattern
  509.     NEXTR        -find next occurance and replace
  510.     NULL        -no operation
  511.     OPENWINDOW geo  -open new window using specified geometry.    Geometry is
  512.              specified as:  +/-leftedge+/-topedge+/-width+/-height,
  513.              where negative numbers denote values relative to the
  514.              width or height of the screen.  For example, the
  515.              following opens a nearly full-screen window leaving
  516.              10 pixels above, below, to the left, and to the right:
  517.  
  518.             openwindow +10+10-10-10
  519.  
  520.              The following opens a window in the upper right hand
  521.              corner of width 320 and height 100.
  522.  
  523.             openwindow  -320+0+320+100
  524.             openwindow  -320+0-0+100    (same thing)
  525.             openwindow  -320-100-0-0    (lower rght hand corner)
  526.  
  527.     PAGEDOWN        -pagedown a partial page (see PAGESET)
  528.     PAGESET n        -n PERCENT (0 to 100). page step size relative to the
  529.              current number of rows in the window.
  530.     PAGEUP        -pageup a partial page (see PAGESET)
  531.     PING n        -set a text marker (0-9).
  532.     PONG n        -move to a previously set text marker (0-9)
  533.     PREV        -find previous occurance of search pattern
  534.     PREVR        -find previous occurance and replace
  535.     PUSHMARK        -push the currently marked block onto a stack and
  536.              unhighlight the block
  537.     POPMARK        -pop the block stack and highlight the popped block
  538.     PURGEMARK        -clear the mark stack
  539.     QUIT        -quit
  540.     RECALL        -recall most recently entered command.  Must be used
  541.              from a keymap (c-esc).
  542.     REF         -reference string under cursor (see below)
  543.     REFORMAT        -reformat paragraph using the margin.
  544.     REMEOL        -Remove text under and beyond the cursor.
  545.     REMPATH wild    -Remove one or more symbolic directorys from DME's
  546.              special path... a */? wildcard is acceptable.
  547.     REPEAT cnt comm -SEE BELOW
  548.     REPSTR string   -SET the replace string pattern
  549.     RESETTOGGLE N   -clear toggle array entry N(0..31)
  550.     RESIZE cols rows-Resize current window. E.G:  (resize 70 23)
  551.     RETURN        -same as (FIRST DOWNADD)
  552.     RIGHT        -cursor right
  553.     RX            -ARexx macro, no args   (RX macname)
  554.     RX1         -ARexx macro, one arg   (RX1 macname arg1)
  555.     RX2         -ARexx macro, two args  (RX2 macname arg1 arg2)
  556.     SAVEAS file     -save current text under a different name (title
  557.              line name does not change)
  558.     SAVECONFIG        -save current editor configuration to s:dme.config
  559.     SAVEMAP file    -save user keymappings
  560.     SAVEOLD        -save current text under current name
  561.     SAVESMAP file   -save all keymappings, including system keymaps
  562.     SAVETABS on/off -Optimize file saves by crunching spaces to tabs.
  563.              The default is OFF.
  564.     SCANF ctlstr    -scan the string at the current text position (C scanf)
  565.              example:    (scanf %s)          SEE BELOW
  566.     SCREENBOTTOM    -Move cursor to the bottom of the screen.
  567.     SCREENTOP        -Move cursor to the top of the screen
  568.     SCROLLUP        -Scroll up without moving cursor
  569.     SCROLLDOWN        -Scroll down without moving cursor
  570.  
  571.     SET var str     -create/modify an internal variable (access w/ $)
  572.     SETENV var str  -create/modify an enviroment variable (1.3 ENV:)
  573.     SETFONT font sz -Set the window's font.  ex:   (setfont topaz.font 11)
  574.  
  575.     SETPARCOL col   -Set the LEFT margin for word wrap mode paragraphing &
  576.              reformat.    MUST be less than MARGIN.
  577.  
  578.     SETTOGGLE N     -set toggle array entry N  (0..255)
  579.     SOURCE file     -source a script file. '#' in first column for comment
  580.     SPLIT        -Split line at cursor
  581.     SWAPMARK        -PUSHMARK, swap top two marks on stack, POPMARK
  582.     TAB         -forward tab
  583.     TABSTOP N        -Set tab stops every N.  does not effect text load
  584.     TITLE (title)   -set window title manually
  585.     TLATE [+/-]N    -translate character by +N or -N, or set character
  586.              to exactly N if no + or -. (e.g. TLATE +65 TLATE 3)
  587.     TMPHEIGHT N     -set window height for next window only, pixels
  588.     TMPWIDTH  N     -set window width for next window only,  pixels
  589.     TOGGLE N        -flip toggle array entry N (0..255)  (See IF)
  590.     TOMOUSE        -moves cursor to mouse position
  591.     TOP         -Move to Top of File
  592.     TOPEDGE N        -set topedge in the screen in PIXELS for any new window
  593.     TPEN pen        -set pen for title bar rendering
  594.     UNBLOCK        -clear the block markers for the current window
  595.     UNDELINE        -insert most recently deleted line (only last line saved)
  596.     UNDO        -undo current line (must be mapped to a key to work)
  597.     UNJUSTIFY        -removes extra spaces in a line
  598.     UNMAP key        -unmap a key
  599.     UP            -cursor up
  600.     UNSET var        -delete an internal variable
  601.     UNSETENV var    -delete an enviroment variable
  602.     WHILE cnd act   -(see below)
  603.     WIDTH N        -set width in PIXELS for any new window
  604.     WLEFT        -move to beginning of previous word.  If in the
  605.              middle of a word, move to beginning of current word.
  606.     WORDWRAP on/off/toggle
  607.             -Word Wrap mode (related to MARGIN)
  608.     WRIGHT        -move to beginning of next word
  609.  
  610.  
  611.     -------------------------------------------------------------
  612.     -------------    More Info on Complicated Commands    -----------------
  613.     -------------------------------------------------------------
  614.  
  615.     MENUOFF/ON        -This command will enable/disable menus.  Users
  616.              who have a whole bunch of MENUADD commands in
  617.              their .EDRC should note that disabling menus at
  618.              the beginning will speed up the MENUADD commands.
  619.              Then reenable menus at the end.  These calls are
  620.              stackable in that if you call MENUOFF, say, twice,
  621.              it will take two MENUON commands to restore
  622.              menus.  The reverse is not true.
  623.  
  624.     CTAGS   (c-[)   -(1.30B and beyond) Compatible with Aztec's CTAGS
  625.              program.  This command searches for the subroutine
  626.              name under the cursor in the associated tags file
  627.              ("tags" in the directory holding the file currently
  628.              being edited).  Also, the file "tags" in directories
  629.              specified by the special DME path (see ADDPATH and
  630.              REMPATH) will be searched.
  631.  
  632.              If the tag is found, it loads the file the subroutine
  633.              resides in if neccesary, then WindowToFront()'s the
  634.              window, ActivateWindow()s it, and GOTO's the line
  635.              where the subroutine starts.  The search within the
  636.              source file is anchored to the left column.  If the
  637.              file is already loaded, it is not reloaded.
  638.  
  639.              This enables a programmer to quickly trace subroutines
  640.              over an arbitrary number of files.
  641.  
  642.              The tags file contains one or more lines of the following
  643.              format:
  644.  
  645.              subroutine-name file-name /^search-pattern
  646.              (that's a slash and a carrot, then the pattern)
  647.  
  648.              -- EXAMPLE of 'TAGS' file:
  649.              setpen cmd1.c /^setpen(
  650.              do_up cmd1.c /^do_up(
  651.              --
  652.  
  653.             SPECIAL NOTE:  CTAGS will work even if you are not in
  654.             the directory containing the file.    You can thus place
  655.             a tags file in the directory containing the files it
  656.             references, and the filenames WITHIN the tags file need
  657.             not be a full path.
  658.  
  659.     REF     (c-])   -(1.28d and beyond).  This is a very powerful new
  660.              command that allows you to bring up a reference to
  661.              a keyword with a single keystroke.  This is useful for
  662.              programmers who have on-line documentation or fully
  663.              commented include files.  DME opens a window just big
  664.              enough to fit the reference.
  665.  
  666.              NOTE:  The new CTAGS command may be more suited to
  667.              your application.
  668.  
  669.              The reference keyword is the alpha-numeric string
  670.              currently under the cursor.  REF will search the
  671.              file DME.REFS in the directories listed by the
  672.              special DME path (see ADDPATH and REMPATH).  The
  673.              file must be built by the user and each line has the
  674.              following format:
  675.  
  676.              (keyword) (nolines/endstring) (file) (searchstr/##seekpos)
  677.  
  678.              Surrounding the keywords with `' or () is optional if
  679.              the keyword does not contain spaces.
  680.  
  681.             keyword     -keyword under cursor
  682.             nolines/ends-either a number (the number of lines
  683.                      in the reference) or a string denoting
  684.                      the end of the reference when found.
  685.             file        -the file containing the reference
  686.                      material
  687.             searchstr/##-search string in file that indicates
  688.                      the beginning of the reference, or
  689.                      two hashes (##) and the seek position
  690.                      in decimal (like ##2343).  The latter
  691.                      method is used mainly for reference-
  692.                      generator programs.
  693.  
  694.              Upon  finding  a  successful  keyword  match  the
  695.              specified file is openned and  the  seach    string
  696.              searched for.  If a seek position    was  specified
  697.              no search is made and  a  seek  is  made  to  the
  698.              beginning    of  the  reference.   If  found,   the
  699.              indicated    number    of  lines  (if  a  number   is
  700.              specified for <nolines/ends>) or  until  a  match
  701.              with the endstring (if a  string  was  specified)
  702.              will be placed in a temporary file and a new  DME
  703.              window brought up. The  temporary    file  is  then
  704.              deleted.
  705.  
  706.              When looking for matches, the compare is anchored
  707.              at the beginning of each line in the file.  Thus,
  708.              any spaces in front of the  string  in  the  file
  709.              must be duplicated.
  710.  
  711.              T: must be assigned  to  a  temporary  directory,
  712.              usually RAM:   See the included example  DME.REFS
  713.              file.  The most common things referenced are  the
  714.              autodocs and commented include files.
  715.  
  716.              Some  modification  of  the  included  DME.REFS.*
  717.              files may    be  required  due  to  differences  in
  718.              include file and autodoc format.
  719.  
  720.     SCANF ctlstr    -This is equivalent to the C scanf() function with the
  721.              restriction that only one conversion is allowed, that
  722.              conversion being a string.  Thus:
  723.  
  724.              scanf %s        will place the string under the
  725.                     cursor in the variable $scanf
  726.  
  727.              scanf %4s        The first four chars of the string.
  728.  
  729.              scanf %[0123456789]
  730.                     will scan the string while it contains
  731.                     specified chars (e.g. scan a number)
  732.  
  733.              scanf %[~,]    will scan the string until it finds
  734.                     a ','.
  735.  
  736.             The variable $scanf may be used as an argument  in
  737.             any command.  Example:  (insfile $scanf).
  738.  
  739.             NOTE:  If using $scanf in a  macro,  you  probably
  740.             want to precede it with a \  to  prevent  it  from
  741.             being evaluated at macro-creation time.
  742.  
  743.  
  744.     REPEAT N arg    -Repeat (arg) N times.  Apart from being a number, N
  745.              can also be one of:
  746.  
  747.             line    Current line # (lines begin at 1)
  748.             lbot    #lines to the bottom, including current line
  749.             cleft    column # (cols begin at 0)
  750.             cright    #chars to eol, including current char under cursor
  751.             tr    #char positions to next tab
  752.             tl    #char positions to next back tab
  753.  
  754.             Certain  commands  can  abort   a    REPEAT     loop.
  755.             Specifically, any FIND[R], NEXT[R], or PREV[R]  in
  756.             which the search string is NOT found will abort  a
  757.             REPEAT.  Most  operations  which  can  go  out  of
  758.             bounds, such as UP, LEFT, RIGHT, DOWN, also  abort
  759.             a repeat.
  760.  
  761.             Specifying -1 as N causes REPEAT to go on  forever
  762.             (well, actually, 0xFFFFFFFF  times)  or  until  an
  763.             abort.
  764.  
  765.     IF [!]condition arg
  766.     WHILE [!]condition arg
  767.     IFELSE [!]condition arg else arg
  768.  
  769.         If the specified condition is true, execute the  argument.
  770.         For WHILE, the argument is executed until the condition is
  771.         false (be careful!).
  772.  
  773.         the optional '!' inverts the logic.
  774.  
  775.         Conditions:
  776.  
  777.  
  778.         #        if toggle entry # is SET.  there are 256 toggles (0..255)
  779.         t        if On line 1
  780.         b        if On last line
  781.         l        if At column 0
  782.         r        if At end of line (spaces below and beyond)
  783.         m        if Text has been modified
  784.         i        if in insert mode
  785.         x[<=>]# if column position (starts at 1) is (any OR combo of
  786.             <, =, or >) than some number.  Example:   x<=20
  787.         y[<=>]# if Line number (starts at 1) is (same as for x)
  788.         cl        character under cursor is lower case alpha
  789.         cu        character under cursor is upper case alpha
  790.         ca        character under cursor is alpha-numeric
  791.         cn        character under cursor is numeric
  792.         c[<=>]# character under cursor is ascii code # (# in decimal)
  793.             optional conditionals as in 'x' and 'y'.
  794.         cb        cursor within a block
  795.  
  796.     Example: simulating an insert mode toggle: ALT-i (not CTL-i)
  797.  
  798.     map a-i (ifelse 0 (toggle 0 insertmode OFF) (toggle 0 insertmode ON))
  799.  
  800.     Example: while lower case, map to upper case and move right.
  801.  
  802.     map c-U (while cl (tlate -32 right))
  803.  
  804.     Example: Search/Replace all of text.
  805.  
  806.     map c-R (escimm (findstr ) escimm (repstr ) repeat -1 nextr)
  807.  
  808.      if c<32 ((char under cursor is smaller than 32))
  809.      if c<>32 ((char under cursor is not equal to 32))
  810.      while !b down
  811.  
  812.  
  813.                     IV
  814.                  FILE PARTICULARS
  815.  
  816. No Matter what you set internal tabs to, tabs in disk files will be 8.
  817. This allows you to use your favorite tabs stops (mine are 4) and still
  818. have your disk files compatible with TYPE, a printer, etc...   DME  by
  819. default doesn't bother to optimize when writing out files  and  simply
  820. uses spaces. If you (SAVETABS on) before saving (or in  your  S:.EDRC,
  821. etc...), DME will attempt to optimize the  file  by  placing  TABS  in
  822. appropriate places.  DME will not  place  any  TABS  after  the  first
  823. single, back, or double quote is encountered in a line.  If this  does
  824. not cover every situation in your particular application that you want
  825. to be *sure* no tabs will occur in sensitive sections, then you should
  826. not use (SAVETABS on).
  827.  
  828. It should be noted that since DME removes spaces at  the  end  of  the
  829. line, editing UUENCODED ascii files will not work for uuencoded  lines
  830. which end with a space.  The nominal fix is to add an extra  character
  831. after each uuencoded line (anything) in the proper  column,  which  is
  832. ignored by the UUDECODE program.
  833.  
  834. The command to save the current document under    the  default  name  is
  835. SAVEOLD, *not* SAVE.  SAVE is not a valid command.  This is to prevent
  836. people who have not read the documentation from assuming 'save'  takes
  837. an argument (and screwing up their work).  SAVEOLD does  NOT  take  an
  838. argument, SAVEAS does.
  839.  
  840. SAVEOLD/SAVEAS do not automatically backup the destination  file.   If
  841. you are working in an enviroment where you are worried about  ensuring
  842. a viable copy can be recovered if your Amiga crashes in the middle  of
  843. the save, you can write a macro to save  the  file  into  two  places.
  844. Usually, people backup their working disks so this is not neccesary.
  845.  
  846. Workbench Support:   If  DME  is  run  from  the  workbench,  it  will
  847. automatically construct an icon file when you save a document.    If run
  848. from a CLI, no icon file is generated.
  849.  
  850.                     V
  851.                   WORKBENCH SUPPORT
  852.  
  853. DME V1.26 and beyond support the workbench in the following way:   (1)
  854. you can click on the DME icon to bring up DME with the file "unnamed".
  855. (2) you can select one or more standard ascii documents which have DME
  856. as the default tool.  If DME has no knowlege of a text icon,  it  uses
  857. its own. Command line arguments are passed to DME  via    the  tooltypes
  858. entries for DME's application icon or via individual  document  icons.
  859. The following format is used:  (This is a hack, no?)
  860.  
  861.     ****** WARNING, 1.40-41, most workbench options do not work.
  862.  
  863.     ARG=flag
  864.  
  865.     See the OVERVIEW section for allowed flags.  Only one argument per
  866.     line is allowed (sorry).  The tooltypes for the  application  icon
  867.     are processed first, then the tooltypes for each document icon are
  868.     processed before each file is loaded.
  869.  
  870.     ARG= -t10
  871.     ARG= -l10
  872.  
  873.                     VI
  874.                   REVISION SUMMARY
  875.  
  876. V1.43
  877.     - refs command fixed yet again
  878.  
  879. V1.42
  880.     - keyboard macro routines accept foreign characters (> ascii code 127)
  881.     - bug fix to $variable stuff when 'variable' does not exist
  882.     - bug fix to split
  883.     - bug fix to join
  884.     - COL command enhanced (now w/ +col and -col for relative movement)
  885.     - new special vars: $margin, $modified, $currentline
  886.     - new commands UNDELINE, MODIFIED, JUSTIFY, UNJUSTIFY, TITLE
  887.     - cosmetic changes to arp requester
  888.  
  889. V1.41 HOPEFULLY STABLE
  890.     - Recompiled with fixes and new DICE version
  891.  
  892. V1.40 GAMMA INTERMEDIATE
  893.     - No longer configurable with 'config' program.  Now saves window
  894.       dimensions, color selection, and most window modes (insert, margin,
  895.       etc...) to S:dme.config, restoring automatically when any new
  896.       window is brought up.
  897.  
  898.     - Can no longer specify window dimensions on command line or via
  899.       workbench, sorry!
  900.  
  901.     - New commands: SAVECONFIG FGPEN BGPEN HGPEN
  902.  
  903.     - Fixed bug in ARP requester ... wasn't saving D2/D3/A6.  Also fixed
  904.       but in Lattice asm... apparently if the __MERGED section in afilereq.asm
  905.       is first lattice asm generates a 0 byte bss section OOPS!
  906.  
  907.     - This is an Experimental intermediate version
  908.       (executable compiled w/ my compiler and may not compile cleanly under
  909.        Lattice or Aztec)
  910.  
  911. V????
  912.     - didn't restore pr_ConsoleDevice after an execute!
  913.  
  914. V1.39
  915.     - NEW COMMAND, 'setparcol'.  Set paragraph left margin for reformat
  916.       command and word wrap mode.  The default is -1 (same as original
  917.       format), else a column number.
  918.  
  919.     - case sensitive bug fixed.. used to always be case insensitive
  920.       no matter which option you chose.
  921.  
  922.     - search-and-replace bug fixed... cursor positioned to END of
  923.       replaced string to prevent improper operation when replace
  924.       string is a superset of the search string.
  925.  
  926.     - Menus more compact.
  927.  
  928. V1.38
  929.     - Removed fix in 1.37, use '1.4libpatch' if running under 1.4A16.
  930.  
  931.     - FIXED AREXX BUG... DMe would crash if ARexx was installed for
  932.       V's 1.37 and 1.36
  933.  
  934. V1.37
  935.     - 1.4a16 crashes on OpenLibrary() where the library does not
  936.       exist.  Doesn't try to open arex if running under 1.4
  937.       (for now, this is a temporary stopgap)
  938.  
  939. V1.36
  940.     -Removed dres.library IPC.    Removed dres.library requirement.  (ARexx IPC
  941.      still in of course).  Source now compilable under Lattice C and Manx C.
  942.  
  943. V1.35a
  944.     -can change block pen now and DME updates the title using the correct
  945.      color.
  946.  
  947. V1.35
  948.     -Bug in 1.34 fixed, would only work if dres.library was installed
  949.     OOOPPS.
  950.  
  951. V1.34
  952.     -New variables $fpath and $fname have been added.  $fpath is the path
  953.      part of the current filename, including trailing / or : (if any).
  954.      $fname is anything after that.  For example:
  955.  
  956.     FILE        fpath        fname
  957.     s:.edrc     s:         .edrc
  958.     blah                 blah     (path = "")
  959.     /poof        /         poof
  960.  
  961.  
  962. V1.33    RELEASE
  963.     -You can now run <nil: >nil: DME and close the console window that
  964.      you ran it from.  The execute command now requires the NULL: device
  965.      to be mounted or an error will occur.
  966.  
  967.     -space -> tab conversion does not take place after the first control
  968.      character (<32), as well as the first quote ("), open paren ((), or
  969.      single quote (') that it didn't before.
  970.  
  971. V1.32            (small fixes)
  972.     -Fixed workbench bugs, DME would exit if it could not find the
  973.      executables disk object.  No longer does so.
  974.  
  975. V1.31    RELEASE
  976.     -Added new variables $lineno and $colno
  977.     -Added CD command, ARPLOAD automatically CD's to DIR part of
  978.      requester.
  979.     -Added IPC support (my own ipc)
  980.     -Fixed bug in BMOVE (when the source block is an entire file)
  981.  
  982. V1.30C    LIMITED
  983.     -MAJOR!    Macros, Internal variables, and ENV: enviroment variables
  984.         may be specified with $varname, $(varname), or $`varname'.
  985.  
  986.     -New commands:  SET, SETENV, UNSET, UNSETENV    (variable support)
  987.  
  988.     -REFS window bug fixed I hope (made window slightly too small).
  989.     -SAVE[S]MAP bug fixed for space mappings
  990.     -CTAGS doesn't modify the window title if the window is iconified
  991.      (allows you to make the following map: map <somemap> (iconify ctags)
  992.  
  993.  
  994. V1.30B    Limited release
  995.     -Kim fixed a bug in splitpath
  996.     -added CTAGS command... support for Aztec's CTAGS program
  997.     -added ADDPATH command... special directory paths for DME
  998.     -added REMPATH
  999.  
  1000.     REFS no longer searches fixed directories, but looks at the
  1001.     ADDPATH directories.  CTAGS also looks at the ADDPATH
  1002.     directories.  CTAGS supports arbitrary directory specifications
  1003.     and is intelligent about where to look for the TAGS file.
  1004.  
  1005.  
  1006. V1.30    RELEASE
  1007.     -a couple small bugs fixed
  1008.     -fixed text bug that sometimes overwrites the right border
  1009.     -added new commands
  1010.     SETFONT     (for all of text, static fonts only)
  1011.     IGNORECASE  (for searches)
  1012.     -added new commands (AREXX support, Kim DeVaughn)
  1013.     RX, RX1, RX2
  1014.     -added new commands (by Kevin Speghetti)
  1015.     PUSHMARK, POPMARK, SWAPMARK, PURGEMARK        block marker stack
  1016.     PING, PONG                    text markers (0-9)
  1017.  
  1018.     note: block marks on the stack, ping and pong, do not track text
  1019.     changes (bug).
  1020.  
  1021.     -Many commands will now work while the text window is iconified
  1022.      without having to uniconify it.
  1023.  
  1024. V1.29E
  1025.     -Fixed low memory bug in do_bomve() again.
  1026.     -Fixed arp file requestor problems.
  1027.     -added ARPINSFILE command.
  1028. V1.29D
  1029.     -Fixed low memory bug in do_bmove()...
  1030. V1.29C
  1031.     -highlighted icon window if file modified
  1032. V1.29B
  1033.     -INLINE FILENAME:
  1034.      added $filename variable.    $scanf and $filename can now be embedded
  1035.      anywhere on the command line.
  1036.     - ^x added (control-character), so you do not have to embed actual
  1037.      control characters in your macros.
  1038.     - \ overide added (\^x) produces "^x" instead of control-x, etc...
  1039.  
  1040. V1.29  RELEASE
  1041.  
  1042.     -Foreign keyboards supported better.
  1043.     -Iconify window is activated rather than not activated.
  1044.     -can keymap keys which normally produce nothing.
  1045.     -blocks are displayed in a different color
  1046.     -can now move/copy across windows
  1047.     -can now resize window while file loading
  1048.     -new commands ARPLOAD ARPSAVE   (uses ARP filerequestor if arp.library)
  1049.      MENUADD MENUDEL MENUDELHDR MENUCLEAR MENUOFF MENUON
  1050.  
  1051.     minor bugs fixed, major remodeling of the source (this is what I
  1052.     use my vacation for!)
  1053.  
  1054.     menus:  the right mouse button may be mapped only if there is no
  1055.     menu, Else is used as the menu selector.  NOTE! It is much faster
  1056.     to surround a set of MENUADD commands in a source file with
  1057.     MENUOFF at the beginning and MENUON at the end.  You can also specify
  1058.     menu items as macros in other commands (example: project-save)
  1059.  
  1060. V1.28h SMALL RELEASE    references work better
  1061.  
  1062. V1.28g SMALL RELEASE    Fixed NK0 bug in 1.28f plus keymap problems in 1.28f
  1063.  
  1064. V1.28f RELEASE
  1065.     Fixed macro bug created in 1.28e... could not specify macros on the
  1066.     command line.
  1067.  
  1068. V1.28e INTERNAL/BETA
  1069.     New Commands:   REF     (c-])   -cross reference the word under the
  1070.                      cursor and bring up a new window
  1071.                      containing a description for that
  1072.                      word.  See docs above.
  1073.  
  1074.     -The keymapping has been fixed and should now work on any foreign
  1075.      keyboard.
  1076.     -MAJOR ADDITION:  () may be used instead of `' to enclose commands.
  1077.      One can enclose the other ... that is, to get the "'" character you
  1078.      can say (this is a charlie's day).
  1079.  
  1080. V1.28c RELEASE
  1081.     New Commands:   CHFILENAME        -change default filename for a window
  1082.             RECALL  (c-esc) -recall command line (e.g. you make a
  1083.                      mistake).    Must be used from a keymap,
  1084.                      default is c-esc.
  1085.  
  1086.             SCANF        -C scanf (single string only).  Extract
  1087.                      strings from the text for use in any
  1088.                      arbitrary command.
  1089.  
  1090.     Command Parser: $scanf        -as an argument by itself is recognized
  1091.                      to be the extracted string from scanf.
  1092.                      Currently, the variable name (after
  1093.                      the dollar) can be anything since only
  1094.                      one variable exists, but use '$scanf'
  1095.                      for future compatibility.
  1096.  
  1097.     -Many Bug fixes (mainly benign bugs)
  1098.     -^C (CONTROL C) now recognized when typed in a window.  c-c is mapped
  1099.      to () = no action.
  1100.     -Please look at the revised default keymappings listed in these docs.
  1101.  
  1102.  
  1103. V1.28 LIMITED RELEASE
  1104.     New Commands :  SCROLLUP    (a-up)
  1105.             SCROLLDOWN    (a-down)
  1106.     Modified Cmds:  ESCIMM
  1107.     The execution of commands specified by an ESCIMM is blocked until
  1108.     the user hits return on the ESCIMM command line.
  1109.  
  1110.             BCOPY
  1111.     No longer unblocks the block.
  1112.  
  1113.     -Title bar status line no longer blinks when it changes
  1114.     -Key releases no longer effect operation
  1115. V1.27 RELEASE
  1116.     -macros run about 20% faster due to hashing of the command table
  1117.     -Maximum # of toggles raised to 256 (see IF/WHILE)
  1118.     -small fixes to the code (nothing major)
  1119.     -child windows inherit tab stops, insert mode, and wordwrap mode
  1120.     -MOUSE BUTTONS AND MOVEMENT CAN NOW BE MAPPED
  1121.     -New Commands: ICONIFY    (used to be hardwired.  Is now a command)
  1122.     -Extended Commands: GOTO    (GOTO END of block)
  1123. V1.26 Beta, minimal Release
  1124.     -Workbench support
  1125.     -New Command:   EXECUTE
  1126. V1.25 RELEASE
  1127.     -BSAVE does NOT UNBLOCK after saving (switch in functionality yet again)
  1128.     -various bugs fixed (IF, tabs on file save)
  1129.     -New Commands: MARGIN, REFORMAT, WORDWRAP, RESIZE,
  1130.            TOPEDGE, LEFTEDGE, WIDTH, HEIGHT
  1131.     -Command line options added for setting the window size and an optional
  1132.      specified script file (when specified, local .EDRC not sourced).
  1133.  
  1134.     -Enhanced Commands: IF  ..more control with conditions, addition of
  1135.                   a couple more specifications.
  1136.                JOIN .. functionality slightly changed
  1137.     -keymaps may now be used as macros in other commands. (macros)
  1138.     -New keymaps added to the default set.
  1139.     -Mouse movement cleaned up a little.
  1140.  
  1141. V1.24 Internal
  1142.  
  1143. V1.23 RELEASE
  1144.     -S:.EDRC now sourced instead of C:.EDRC
  1145.     -User keymappings now work in COMMAND mode (when you hit ESC).
  1146.     -You can now map the Amiga keys ('A' for Amiga, since 'a' is alt).
  1147.     -Enhanced Commands: IF/IFELSE/WHILE (optional '!' in front of cond)
  1148.             new condition 'cb' 'character is in selected block'
  1149.             GOTO block  (goto beginning of block)
  1150.     -NewCommands:    PAGESET SAVETABS
  1151.     -Writing TABS (always 8) out to disk to save space now supported.
  1152.  
  1153. V1.22 RELEASE (BUF FIXES FROM 1.20)
  1154.     -'newfile' fixed
  1155. V1.21 RELEASE (BUG FIXES FROM 1.20)
  1156.     -iconify and window handling fixed
  1157.     -left mouse button now tracks the mouse.
  1158. V1.20 RELEASE
  1159.     -bug fixes: bsave now unmarks the block, bdelete now sets 'modified' flag.
  1160.         (other small fixes).
  1161.     -enhancements: overwrite mode status indicator, find, find-replace now
  1162.         completely implemented (yahhoo!!!)
  1163.     -changed commands:    FIND NEXT PREV: no longer loop back to the top of
  1164.         file or top->bottom in the case of PREV.  DELINE will now delete
  1165.         text on the line if there is only one line of text.
  1166.     -enhanced commands: GOTO REPEAT
  1167.     -new commands: SAVEMAP SAVESMAP TOGGLE SETTOGGLE RESETTOGGLE TLATE
  1168.            IF IFELSE WHILE BSOURCE
  1169.            FINDSTR REPSTR FINDR NEXTR PREVR
  1170.            NEWWINDOW
  1171.     -new keymappings: (see a-s, a-S, f3)
  1172.     -window iconification with mouse menu button.
  1173.  
  1174.  
  1175. V1.12 RELEASE
  1176.     -cursor is now pen #3 rather than #1.
  1177.     -changeover to AZTEC C, smaller executable.
  1178.     -now maps shift space to a space.
  1179.     -new commands: REMEOL, WLEFT, WRIGHT
  1180.     -display bug fixes (SPLIT)
  1181.     -FIND/PREV/NEXT will now abort a REPEAT if string not found.
  1182.  
  1183. V1.11 RELEASE NOTES
  1184.     -Bug fixes (mainly graphical mistakes).
  1185.     -User keymappings are disabled in command mode (so you can unmap
  1186.       single ascii characters you may have mapped).
  1187.     -Illegal key combinations no longer give garbage (e.g. ALT-CURSOR-DOWN)
  1188.       you can, of course, still map them to anything you wish.
  1189.     -Save now checks for error conditions on write.
  1190.     -Uses Default Console Keymap (i.e. no longer assumes USA)... but there
  1191.       *is* some stangeness.
  1192.  
  1193. V1.00 RELEASE NOTES
  1194.     -has find, but no replace function
  1195.     -assumes USA keyboard            (fixed 1.11)
  1196.     -disk files written out use spaces instead of tabs&spaces
  1197.  
  1198.  
  1199.                     VII
  1200.                 COMPILING
  1201.  
  1202. DME now compiles under either Manx C or Lattice C (V5.02 and beyond).
  1203. dres.library is no longer required.
  1204.  
  1205.